//package com.lagou.java.dao;
//
//import com.lagou.java.io.Resources;
//import com.lagou.java.pojo.User;
//import com.lagou.java.sqlSession.SqlSession;
//import com.lagou.java.sqlSession.SqlSessionFactory;
//import com.lagou.java.sqlSession.SqlSessionFactoryBuilder;
//
//import java.io.InputStream;
//import java.util.List;
//
//public class UserDaoImpl implements UserDao {
//
//
//    @Override
//    public List<User> findAll() throws Exception {
//
//        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//        SqlSession sqlSession = sqlSessionFactory.openSession();
//
//        List<User> objects = sqlSession.selectList("user.selectList", null);
//        for (Object object : objects) {
//            System.out.println(object);
//        }
//        return objects;
//    }
//
//    @Override
//    public User findByCondition(User user) throws Exception {
//        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//        SqlSession sqlSession = sqlSessionFactory.openSession();
//
//        Object o = sqlSession.selectOne("user.selectOne", user);
//        System.out.println(o);
//        return (User) o;
//    }
//
//    @Override
//    public int insertUser(User user) {
//        return 0;
//    }
//
//    @Override
//    public int updateUser(User user) {
//        return 0;
//    }
//
//    @Override
//    public int deleteUser(String id) {
//        return 0;
//    }
//
//    public static void main(String[] args) throws Exception {
//        UserDaoImpl userDao = new UserDaoImpl();
//        userDao.findAll();
//
//        System.out.println("===============");
//
//        User usr = new User();
//        usr.setId(1);
//        usr.setName("tom");
//        userDao.findByCondition(usr);
//    }
//}
//
///**
// * 自定义持久层框架问题分析:
// *      1. dao层使用自定义持久层框架, 存在代码重复, 整个操作过程的模板重复(加载配置文件, 创建sqlSessionFactory, 生产SQLSession)
// *      2. statementId 存在硬编码问题
// *  解决思路:
// *      1. 使用代理模式生成dao层的代理实现类
// *
// *
// *
// */
